In typical serial data communication systems, a desired bit rate is either user-selectable, via a switch bank or non-variable and "hard-coded" in the software. Many serial data communication devices have the capability of both transmitting and receiving multiple data rates. For instance, certain modems are capable of transmitting data at 19,200 bits per second, 9,600 bits per second, 4,800 bits per second, etc. When a sequence of serial bits is thus received over a communication link, the receiving port must determine the data rate of the incoming data stream so that its internal circuitry can be set to accommodate the signal flow (sometimes referred to as an "autobaud" process).
In typical serial applications, a rate identifying character (i.e. rate "prompt" character) is received, followed by a specified amount of guard time. This idle time permits the receiving device to configure its data rate without concern for loss of information. In many applications, the rate prompt character is positioned at the beginning of a lengthy data stream, and there is only one bit time separating it from the next character. In such systems, the task of automatic data rate determination (i.e. "autobauding") is complicated if more than one serial channel must be monitored simultaneously.
Manufacturers of modems have standardized on the use of the characters "AT" as a rate prompt to determine the baud rate of a received information string. The actual characters in the AT prompt that are used for autobaud detection have a start bit whose value is zero and a succeeding bit with a value of one. Therefore, although the AT character string is commonly used as a data rate prompt, half of the characters in the standard character set have the same initial characteristics. This fact presents significant problems when a receiving port attempts to synchronize onto an incoming data stream and the AT prompt is not that which has been transmitted, but rather some other set of data characters. The result, obviously, is an erroneous autobaud determination, with a resultant loss of data.
A number of methods exist to detect serial data rates. Most, if not all, perform by a computer-based, software-intensive technique and are typically carried out by the main controlling element in the receiving port. In most cases, the key to rate detection is the time duration of the first bit received. This bit is known as the start bit and is characterized by the value of zero.
One method for achieving data rate detection is by measuring the width of the received start bit. This method requires that the data stream be initially sampled at the highest possible bit rate. Then, by counting the number of zero bits read, the data rate is determined. The algorithm for of this determination can be expressed mathematically by: EQU n=rate/b
where n is the number of zero bits read during the start bit, "rate" is the highest possible data rate, and "b" is the actual transmission rate of the incoming data. This algorithm is described in detail in the "Microprocessor Applications Reference Book", Vol. 1, pp. 1-53 through 1-55, published by Zilog, Inc., July, 1981.
Despite the fact that the above-described algorithm and method have been used for years, they suffer from certain disadvantages. Due to the fact that the method is software based, it cannot autobaud reliably on more than one channel at a time. Additionally, it is known to fail due to its inability to set the data clock in time to receive bits which immediately follow the start bit. The result is lost information. Additionally, the character used for rate detection is either lost or must by synthesized when this technique is implemented. As above stated, if a character set other than AT, is received, the received character set is lost and a retransmission must occur. Finally, in all known systems which employ software-based, data rate detection, autobauding is difficult to implement at speeds greater than 19,200 bits per second. This is due to the fact that typical commercial microcontrollers execute approximately one instruction every microsecond. This renders a measurement of a 52 microsecond start bit (at 19,200 bits per second) extraordinarily difficult using current software technology.
Accordingly, it is an object of this invention to provide a data rate detection system and method which does not lose data during the autobaud process.
It is a further object of this invention to provide an autobaud system which is largely hardware based and avoids the prior software-based autobaud limitations.
It is still another object of this invention to provide an autobaud method wherein data immediately following the autobaud prompt can be immediately accommodated without guard a time.